package gestioneDatabase;

import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;

import utilities.GestoreLink;

/**
 * Classe astratta che racchiude tutti i componenti che andranno a utilizzare
 * solamente un singolo elemento all'interno del Database selezionato
 * 
 */
public abstract class SingleDatabaseElementUser extends Executable {
	/**
	 * Permette di accedere al database restituendo il {@link Element} richiesto
	 * 
	 * @param DatabaseName
	 *            Il nome del database richiesto
	 * 
	 * @param TagName
	 *            Il nome del tipo di elemento su cui si vuole agire
	 * @return L'oggetto {@link Element} richiesto
	 * 
	 * @throws ParserConfigurationException
	 * @throws SAXException
	 * @throws IOException
	 */
	public Element open(String DatabaseName, String TagName)
			throws ParserConfigurationException, SAXException, IOException {

		filepath = GestoreLink.getGestore().getElement(DatabaseName);
		controller = new XMLController(factory, builder, doc);
		doc = controller.openXMLFile(filepath);

		Node root = doc.getFirstChild();

		Element inputElement = doc.createElement(TagName);
		root.appendChild(inputElement);

		return inputElement;

	}
}
